﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using ProntuarioEletronicoMobile.Banco;
using System.Text;
using ProntuarioEletronicoMobile.Repositorio;

namespace ProntuarioEletronicoMobile
{
    public partial class Page1 : PhoneApplicationPage
    {
        private const string strConnectionString = @"isostore:/PacienteDB.sdf";

        public Page1()
        {
            InitializeComponent();
        }

        private void ContentPanel_Loaded(object sender, RoutedEventArgs e)
        {
            Criar_BD_Pacientes();
        }

        private void btBuscar_Click(object sender, RoutedEventArgs e)
        {
            string busca_paciente = txtBuscaPaciente.Text;

            IList<Paciente> lista_pacientes = GetListaPacientes(busca_paciente);

            if (lista_pacientes.Count > 0)
            {
                lbResultado.ItemsSource = lista_pacientes;
            }
            else
            {
                MessageBox.Show("Nenhum Registro Encontrado.\nPor Favor, Refaça Sua Busca.", "Atenção!", MessageBoxButton.OK);
            }
        }

        private void lbResultado_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // If selected index is -1 (no selection) do nothing
            if (lbResultado.SelectedIndex == -1)
                return;

            Paciente paciente_selecionado = (Paciente)lbResultado.SelectedItem;

            MessageBoxResult resultado = 
                MessageBox.Show("Deseja ver o prontuário do Paciente " + paciente_selecionado.NomePaciente +"?", "Visualizar Prontuário?", MessageBoxButton.OKCancel);

            if (resultado == MessageBoxResult.OK)
            {
                // Navigate to the new page
                NavigationService.Navigate(new Uri("/VisualizadorProntuario.xaml?paciente_id=" + paciente_selecionado.IDPaciente, UriKind.Relative));
            }

            // Reset selected index to -1 (no selection)
            lbResultado.SelectedIndex = -1;
        }

        private void Criar_BD_Pacientes()
        {
            using (PacienteDataContext paciente_bd = new PacienteDataContext(strConnectionString))
            {
                if (paciente_bd.DatabaseExists() == false)
                {
                    paciente_bd.CreateDatabase();
                    Inserir_Pacientes();
                }
            }
        }

        private void Inserir_Pacientes()
        {
            //Adicionando Pacientes no Banco de Dados
            using (PacienteDataContext paciente_bd = new PacienteDataContext(strConnectionString))
            {
                Paciente paciente0 = new Paciente
                {
                    IDPaciente = 0,
                    NomePaciente = "Gustavo de Almeida Souza",
                    SexoPaciente = 'M',
                    DataNascPaciente = "23/09/1992",
                    CpfPaciente = "863.527.841-00",
                    EmailPaciente = "gustavo.as@outlook.com",
                    TelefonePaciente = "(81) 9876-5432",
                    RgPaciente = "4.323.456",
                    OrgaoRgPaciente = "SDS/PE",
                    PlanoSaudePaciente = false,
                    NomeMaePaciente = "Augusta Souza Mendoça",
                    NomePaiPaciente = "José Gonçalves de Almeida Souza",
                    Naturalidade = "Recife / PE",
                    Endereco = "Rua Daqui",
                    EnderecoNum = "44",
                    EnderecoComplemento = "Condomínio Belas Flores",
                    EnderecoBairro = "Janga",
                    EnderecoCidade = "Paulista",
                    EnderecoCep = "53444-122",
                    EnderecoEstado = "PE"
                };

                Paciente paciente1 = new Paciente
                {
                    IDPaciente = 1,
                    NomePaciente = "Marina Silvia de Oliveira",
                    SexoPaciente = 'F',
                    DataNascPaciente = "15/12/2002",
                    CpfPaciente = "",
                    EmailPaciente = "marina.so@outlook.com",
                    TelefonePaciente = "(81) 3465-2255",
                    RgPaciente = "",
                    OrgaoRgPaciente = "",
                    PlanoSaudePaciente = true,
                    CarteiraPlanoPaciente = "17654",
                    NomeplanoPaciente = "HapVida",
                    NomeMaePaciente = "Mariana Antunes de Oliveira",
                    NomePaiPaciente = "João Silva de Oliveira",
                    Naturalidade = "Recife / PE",
                    Endereco = "Rua Vinte e Sete",
                    EnderecoNum = "25A",
                    EnderecoComplemento = "CASA",
                    EnderecoBairro = "Candeias",
                    EnderecoCidade = "Jaboatão dos Guararapes",
                    EnderecoCep = "53445-122",
                    EnderecoEstado = "PE"
                };

                Paciente paciente2 = new Paciente
                {
                    IDPaciente = 2,
                    NomePaciente = "Pedro Paulo Pontes Júnior",
                    SexoPaciente = 'M',
                    DataNascPaciente = "12/03/1976",
                    CpfPaciente = "615.365.384-77",
                    EmailPaciente = "ppp.jr@outlook.com",
                    TelefonePaciente = "(81) 8188-4562",
                    RgPaciente = "9.234.124",
                    OrgaoRgPaciente = "SSP/PE",
                    PlanoSaudePaciente = true,
                    CarteiraPlanoPaciente = "2323",
                    NomeplanoPaciente = "Unimed",
                    NomeMaePaciente = "Maria Moraes Pontes",
                    NomePaiPaciente = "Pedro Paulo Pontes",
                    Naturalidade = "Olinda / PE",
                    Endereco = "Av. Asa Branca",
                    EnderecoNum = "54a",
                    EnderecoComplemento = "IV Etapa",
                    EnderecoBairro = "Rio Doce",
                    EnderecoCidade = "Olinda",
                    EnderecoCep = "53442-098",
                    EnderecoEstado = "PE"
                };

                paciente_bd.Pacientes.InsertOnSubmit(paciente0);
                paciente_bd.Pacientes.InsertOnSubmit(paciente1);
                paciente_bd.Pacientes.InsertOnSubmit(paciente2);
                paciente_bd.SubmitChanges();
            }
        }

        private void Listar_Pacientes()
        {
            string busca = "";
            IList<Paciente> ListaDePacientes = this.GetListaPacientes(busca);
            StringBuilder strBuilder = new StringBuilder();
            strBuilder.AppendLine("Detalhes dos Pacientes:");
            foreach (Paciente paciente in ListaDePacientes)
            {
                strBuilder.AppendLine("Nome: " + paciente.NomePaciente + " CPF: " + paciente.CpfPaciente);
            }
            MessageBox.Show(strBuilder.ToString());
        }

        private IList<Paciente> GetListaPacientes(string busca)
        {
            //Listando Valores do Banco de Dados
            IList<Paciente> ListaDePacientes = null;
            using (PacienteDataContext pacientes_bd = new PacienteDataContext(strConnectionString))
            {
                IQueryable<Paciente> PacienteQuery = from paciente in pacientes_bd.Pacientes where paciente.CpfPaciente.Contains(busca) || paciente.NomePaciente.Contains(busca) select paciente;
                ListaDePacientes = (IList<Paciente>) PacienteQuery.ToList();
            }
            return ListaDePacientes;
        }
    }
}